//***********************************************************************
//	File:		Abilities.h
//	Author:		
//	Course:		SGP 1405
//	Purpose:	
//***********************************************************************
//***********************************************************************
//	Purposfully left blank for all comments regarding this file 
//	
//	
//	
//***********************************************************************



#pragma once
#include "Entity.h"

class Emitter; 

class Abilities :
	public Entity
{
public:
	//Trilogy of evil
	Abilities() = default;
	virtual ~Abilities() = default;
	Abilities(const Abilities&) = default; 
	Abilities& operator =(const Abilities&) = default;


	//Type
	int GetType() const { return ENT_ABILITY_BASE; }

	//Interface
	void Update(float dt); 
	void Render(void);
	void HandleCollision(const IEntity* pOther); 
	void HandleEvent(const SGD::Event* pEvent); 
	SGD::Rectangle GetRect() const; 

	//Accessors
	float GetEffectRadius(void)		{ return m_fEffectRadius; }
	float GetLifeSpan(void)			{ return m_fLifespan; }
	float GetLifeSpanTimer(void)	{ return m_fLifespanTimer; }
	Emitter* GetParticleEffect(void){ return m_peParticleEffect; }

	//Mutators
	void SetEffectRadius(float er)			{ m_fEffectRadius = er; }
	void SetLifespan(float ls)				{ m_fLifespan = ls; }
	void SetLifespanTimer(float lst)		{ m_fLifespanTimer = lst; }
	void SetParticleEffect(Emitter* pe)		{ m_peParticleEffect = pe; }
private:
	float m_fEffectRadius = 0.0f; 
	float m_fLifespan = 0.0f; 
	float m_fLifespanTimer = 0.0f; 
	Emitter* m_peParticleEffect; 


};

